Uvod v Mathematico

Dr. J.Slavič, April 2014

Licenčna verzija za študente UNI-LJ

http://www.fs.uni-lj.si/student_net/registracija_mathematica

Uporabniški vmesnik

Format, Palettes, Evaluation,...

puščica dol -> new cell
shift+enter -> evaluate cell
klik na (+)

?Log

Mathemematica vedno poskuša rešiti splošno in analitično (razen, če definiramo drugače)

Nekatere značilnost

Free-form input

cell se začne z “=”, bolj podrobno: wolframAlpha se začne z “==”

Mathematica input

Vse funkcije z veliko in z oglatimi oklepaji; ni presledkov so pa velike začetnice (npr. TrigExpand, LogPlot,...)

Integrate[Sin[x],x]

Poljubna natančnost

Pi

N[Pi] (*komentar: N pods numerično vrednost*)

?N

N[Pi,30]

Velika števila

2^200

%(*zadnji rezultat*)
%%(*predzadnji rezultat itd*)
%1(*rezultat pod out 1*)

%%//N(*nekatere funkcije imajo kratke oblike*)

Enakosti in prirejanje vrednosti

Razlika med = in :=

a=1(*prirejanje vrednost - se tudi takoj izvede*)

b:=2 a(*delayed evaluation: izvede se šele, ko se kliče*)

c=a+b

a=2; (* podpičje prepreči prikaz*)
c

b

Brisanje prirejanja

c

c=.

c

Enakost ==

5==5

Sqrt[(x^2)]==x

enacba=Sqrt[(x^2)]==x

Simplify[enacba,Assumptions->x>0]

True===True

Enakost izrazov ===

Simplify[Sqrt[(x^2)]===x,Assumptions->x>0]

Simplify[x===x,Assumptions->x>0]

Pravila in zamenjave

zamenjaj=ω->1 (*priredi zamenjavo*)

ω->1
(*ω:>1 zakasnjena zamenjava*)

ω

Replace[ω,zamenjaj] (*ReplaceAll - zamenjuje dokler se enačba še spreminja*)

ω/.zamenjaj (*kratka oblika ReplaceAll*)

Patterns / vzorci

_ kateri koli izraz

Ne bomo obravnavali:
_ _ katera koli sekvenca izrazov
_ _ _ nič ali več argumentov

x_ kateri koli izraz imenovan x

Ne bomo obravnavali:
x_h kateri koli izraz imenovan x z Head[x]==h

Head[1]
Head[x]

Preprosta funkcija

f[x_]:=(x^2)+(2^x)

f[4]

f[k]

Tako funkcij ne definiramo

h[x]:=x

h[4]

Funkcija več spremenljivk z neobvezno spremenljivko privzete vrednosti

f[a_,b_,c_:5]:=a+b+c

f[1,2,3]

Uporaba zamenjav

f[k]

f[k]/.x->4

f[k]/.k->4

f[k]/.(k^2)->0

Seznami

Preprosti seznam

seznam={1,3,4}

a=.
b=.

podatki={a->1,b->2}

f[a,b]

f[a,b]/.podatki

Seznam vrednosti

data=Table[f[i],{i,1,10}]

data=Table[f[x+i],{i,1,10}]

data[[1]] (*prvi element*)

Seznam seznama

data=Table[{i,f[i]},{i,1,10}]

MatrixForm[data]

Vnos matrike

M=(({{1, 0, 0}, {0, 1, 0}, {0, 0, 1}}))

MatrixForm[M]

TeXForm[M]

Nekatere pogosto uporabljene funkcije

Integriranje in odvajanje

Integrate[x,x]

Dt[Sin[(x^x)],x](*totalni odvod*)

D[Sin[(x^x)],x](*parcialni odvod*)

D[Sin[(x^x)],{x,3}](*parcialni odvod višje stopnje*)

Uporabne funkcije

h[t_]:=Piecewise[{{t,t<5},{-t,t≥5}}]

Plot[h[t],{t,0,10}]

Reševanje enačb

Algebrajske enačbe

Expand[(((x+y))^2)]

Factor[%]

D[Integrate[1/(x^3+1),x],x]

Simplify[D[Integrate[1/(x^3+1),x],x]]

sol=Solve[(x^2)+x==1]

Obravnanjve rešitev

x/.sol

x/.sol[[1]]

Iskanje ničel

k[x_]:=Sin[x]+Exp[x]
Plot[k[x],{x,-2,2}]

FindRoot[Sin[x]+Exp[x]==0,{x,0}]

Diferencialne enačbe

Brez začetnih pogojev

DSolve[y''[t]+y'[t]+y[t]==a Sin[t],y[t],t]

Z začetnimi pogoji

eqs={y''[t]+y'[t]+y[t]==a Sin[t],y[0]==1,y'[0]==0};
sol=DSolve[eqs,y[t],t]

ySol[t_]=y[t]/.sol[[1,1]]

Simplify[ySol[t]]

Plot[ySol[t]/.a->1,{t,0,100}]

Numerično reševanje

sol=NDSolve[eqs,y[t],{t,0,100}]

eqs/.a->1(*vse konstante morajo biti definirane*)

sol=NDSolve[eqs/.a->1,y[t],{t,0,100}]

ySol2[t_]=y[t]/.sol[[1,1]]

ySol2[1]

Plot[{ySol2[t],ySol[t]/.a->1},{t,0,20}]

Nekateri detajli dela z matrikami

Vektor

v={x,y,z}

MatrixForm[v]

Matrika

M=(({{J, 0, J}, {0, J, 0}, {0, 0, J}}))

Množenje matrike in vektorja

M.v

MatrixForm[%]

Vektorski produkt

Cross[v,v]

Transponiranj vektorja

MatrixForm[{v}]

Transponiranje matrike

MatrixForm[Transpose[M]]

Inverz

Inverse[M]//MatrixForm

Lastne vrednosti in vektorji

{values,vectors}=Eigensystem[M]

values

Determinanta

Det[M]

Prikazovanje rezultatov

Plot

Plot[{x,(x^3)-5},{x,-3,3}]

Plot[{x,(x^3)-5},{x,-3,3}]

Options[Plot]

Plot[{x,(x^3)-5},{x,-3,3},PlotStyle->{{Thick,Red},{Thin,Blue,Dashed}}]

fig=Plot[{x,(x^3)-5},{x,-3,3},PlotStyle->{{Thick,Red},{Thin,Blue,Dashed}},Frame->True,Axes->False,FrameLabel->{"x","y"}]

Export["d:\\tmp.pdf",fig]

Animacije

Krog[t_,barva_:Red]:=Graphics[{barva,Opacity[t],Circle[{t,t},1+t]}]

Krog[.1]

Slika[t_]:=Show[{
Krog[t],
Krog[1-t,Blue],
Krog[0.5,Green]
},PlotRange->{{-2,5},{-2,5}}]

Slika[0.25]

Animate[Slika[t],{t,0,1}]

Nekateri viri

http://reference.wolfram.com/mathematica/tutorial/YourFirstMathematicaCalculations.html

http://www.maths.qmul.ac.uk/~ht/archive/mathematicacmds1_2.pdf

Kaj vse zmore Mathematica (predstavitev od avtorja prve verzije S.Wolfram):
http://blog.stephenwolfram.com/2014/03/injecting-computation-everywhere-a-sxsw-update/